function val = trig_interp(a, x, y)
  % @param
  %   x = vectorul absciselor punctelor din suportul de interpolare
  %   y = vectorul ordonatelor punctelor din suportul de interpolare
  %   a = vectorul punctelor in care vreau sa calculez valorile functiei
  % @return
  %   val = vectorul ce contine valorile functiei in punctele din a

  [m n] = size(x);
  % T e de fapt perioada/2
  T = (x(n) - x(1)) / 2
  N = floor(n/2);
  np = length(a);
  val = zeros(1, length(a));
  A = zeros(1,N);
  B = zeros(1,N);

  %calculez vectorii coeficientilor A si B 
  for i=1:N
    B(i) = y(1:n-1) * (sin(x(1:n-1) * i * pi / T))';
    A(i) = y(1:n-1) * (cos(x(1:n-1) * i * pi / T))';
  endfor
  B = B * 2 / n;
  A = A * 2 / n;

  %calculez valorile functiiei in vectorul a
  val(1:np) = sum(y(1:n-1)) / n;
  for i=1:np
    for j=1:N
      %pentru ca functia mea si functiile sin si cos de mai jos sa aiba aceeasi perioada
      %(pentru mai multe explicatii consultati fisierul README) fac "schimbarea de
      %variabila" urmatoare: inlocuiesc argumentul lambda al functiilor sin si cos cu
      %lambda * pi / 8
       val(i) = val(i) + B(j) * sin(a(i) * j * pi / T) + A(j) * cos(a(i) * j * pi / T);
    endfor
  endfor
endfunction
